package app

import (
	"fmt"
	"hft/global"
	"log"
	"os"

	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
)

// 全局配置设置
func InitViper() *viper.Viper {
	var filePath string
	var env = os.Getenv("MODE")
	if env == "dev" {
		filePath = "config.dev.yaml"
		fmt.Println("当前模式:开发者")
	} else if env == "pro" {
		filePath = "config.yaml"
		fmt.Println("当前模式:线上")
	} else {
		log.Fatal("错误的全局文件配置")
		os.Exit(1)
	}
	v := viper.New()          //设置一个新的的viper
	v.SetConfigName(filePath) //设置文件
	v.SetConfigType("yaml")   //设置文件类型
	v.AddConfigPath("./")     //根目录下的配置文件的路径

	err := v.ReadInConfig()
	if err != nil {
		panic(fmt.Errorf("Fatal error config file: %s \n", err))
	}

	// 监听配置
	v.WatchConfig()

	v.OnConfigChange(func(e fsnotify.Event) {
		fmt.Println("config file changed:", e.Name)
		if err = v.Unmarshal(&global.OC_CONFIG); err != nil {
			fmt.Println(err)
		}
	})

	if err = v.Unmarshal(&global.OC_CONFIG); err != nil {
		fmt.Println(err)
	}

	return v
}
